파이썬 설치

여기에서는 사용자의 로컬 컴퓨터에 파이썬을 설치하고 사용하는 방법을 보인다.

파이썬 정보

파이썬 설치에 앞서 알아야 할 기본적인 정보를 살펴보자.

파이썬의 종류

  • CPython
    • C 구현
  • jython
    • Java 구현
  • IronPython
    • .NET 구현
  • PyPy
    • 파이썬 JIT
  • Pyston
    • LLVM

파이썬을 설치한다는 것은 파이썬 언어를 해석할 수 있는 인터프리터(interpreter)를 설치한다는 의미이다. 인터프리터란 소스 코드를 읽고 해석하여 수행하는 어플리케이션이다. 이러한 어플리케이션도 결국은 어떤 다른 언어로 구현(만들어지다는 의미)되어야 한다.

가장 널리 쓰이는 파이썬 구현은 C 언어로 만들어진 CPython으로 C/C++ 언어로 된 라이브러리를 직접 호출할 수 있기 때문에 수많은 유용한 C/C++ 라이브러리를 사용할 수 있는 장점이 있다. 수치 계산용으로는 거의 항상 CPython을 사용한다.

그 외에 Java로 구현된 jython, .NET 으로 구현된 IronPython 등이 있으며 이러한 구현은 JAVA 라이브러리나 .NET 컴포넌트를 파이썬에서 직접 호출하여 사용해야 하는 경우에 쓰인다.

PyPy와 Pyston은 최근 활발히 개발되고 있는 구현으로 JIT(Just-In-Time) 컴파일러를 내장하여 반복되는 코드를 빠르게 실행할 수 있도록 한다.

파이썬의 버전

  • 버전 표기법
    • major.minor.micro
  • Major 버전
    • version 2
      • 현재 최신 버전 2.7.11
      • 더 이상의 신규 마이너 버전 없음
    • version 3
      • 현재 최신 버전 3.5.1
      • version 2와 하위 호환 없음
  • 버전간 차이
    • 문자열 저장
      • version 2는 문자열을 바이너리 형태로 저장, version 3는 유니코드 포인트로 변환하여 저장
    • 문법 차이
      • print 명령, 나누기 연산자(division operator) 등

Python은 다른 언어와 달리 두 개의 버전이 동시에 활발하게 사용되고 있다. 그 이유는 버전 2로부터 버전 3으로 변경되며 여러가지 유용한 기능이 추가되었지만 문법이 호환되지 않기 때문에 기존에 버전 2를 사용하고 있던 사용자의 경우 버전 3으로 포팅(port)해야 하는 어려움이 있고 일부 패키지의 경우 버전 3을 지원하지 않아 이러한 패키지를 사용하는 사람은 불가피하게 버전 2를 계속 사용할 수 밖에 없기 때문이다.

기본 파이썬 설치

  • 파이썬을 사용할 수 있는 최소의 설치
  • 기본적으로 인터프리터(interpreter)만 설치
  • https://www.python.org/downloads/
  • 실제로는 사용하지 않는다.

처음 파이썬을 사용하는 사람은 https://www.python.org/downloads/ 에서 기본 파이썬 인터프리터만 다운로드 받아 설치하기 쉽지만 이 경우 패키지 관리가 어렵고 여러가지 다양한 추가 도구를 별도로 설치해야 하기 때문에 이렇게 설치하는 것은 권장하지 않는다.

파이썬 배포판(Distrubutions)

  • 인터프리터 및 패키지(라이브러리), 패키지 관리 시스템, 콘솔(console), 강화된 인터프리터(enhanced interpreter) 등을 포함

  • 배포판의 종류

    • ActiveState ActivePython (commercial and community versions, including scientific computing modules)
    • pythonxy (Scientific-oriented Python Distribution based on Qt and Spyder)
    • winpython (WinPython is a portable scientific 파이썬 distribution for Windows)
    • Conceptive 파이썬 SDK (targets business, desktop and database applications)
    • Enthought Canopy (a commercial distribution for scientific computing)
    • PyIMSL Studio (a commercial distribution for numerical analysis – free for non-commercial use)
    • eGenix PyRun (a portable python runtime, complete with stdlib, frozen into a single 3.5MB - 13MB executable file)
    • Anaconda 파이썬 (a full python distribution for data management, analysis and visualization of large data sets)

파이썬은 기본 파이썬 인터프리터 이외에도 다양한 패키지(라이브러리)와 개발 도구를 함께 설치해 주는 배포판(distribution)으로 설치하는 것이 좋다. 다양한 배포판이 존재하면 사용하고자 하는 운영체제, 32/64 비트 지원 여부, 무료/상용 여부를 잘 고려하여 선택해야 한다.

Continuum Anaconda

  • 가장 후발 주자 (Travis Oliphant 2012년 설립)
  • 2015년 현재 사실상의 표준(de facto standard)
  • 모든 플랫폼(Windows/Linux/Mac 32/64bit)에 대해 완벽한 패키지 제공
  • 모든 플랫폼에 대해 오픈 소스, 무료
  • 기업용 유지 보수 서비스 동시 제공
  • 기업 빅데이터용 특수 패키지 개발 및 판매

현재 가장 널리 사용되는 파이썬 배포판은 Continuum사가 제작한 Anaconda이다. Anaconda는 여러가지 배포판 중에서 가장 늦게 발표되었음에도 불고하고 뛰어난 완성도로 인해 현재 가장 널리 사용되는 사실상의 표준(de facto standard) 배포판이 되었다.

Anaconda 배포판 다운로드 및 설치

Anaconda 배포판을 설치하는 방법은 아주 쉽다. https://www.continuum.io/downloads 웹상이트에서 원하는 운영체제와 버전을 선택하여 다운로드 받은 뒤, 원클릭으로 설치할 수 있다.

설치 완료

  • Windows 시스템의 경우

설치가 완료되면 윈도우즈 운영체제의 경우 그림과 같이 Anaconda2(버전 2의 경우) 또는 Anaconda3(버전 3의 경우)이라는 아이콘 그룹이 생기고 그 아래에 다음과 같은 메뉴가 만들어진다.

  • Anaconda Prompt
  • IPython
  • Jupyter Notebook
  • Jupyter QTConsole
  • Spyder

설치 확인

일단 Anaconda Prompt를 실행하여 콘솔 창을 열고 그곳에다 다음과 같이 입력하여 설치를 확인한다.

conda 패키지 관리자

conda 는 Anaconda 배포판에서 파이썬 패키지(라이브러리)를 설치하고 관리하는 역할을 하는 프로그램이다. 원래 파이썬의 기본 패키지 관리자는 pip 라고 별도로 있지만 conda에서는 pip에 없는 다양한 기능을 제공하므로 사용이 편리하다.


In [1]:
conda --version   # 버전 확인


conda 4.1.11

In [3]:
conda list  # 설치된 패키지 확인


# packages in environment at /home/dockeruser/anaconda2:
#
_nb_ext_conf              0.2.0                    py27_0  
alabaster                 0.7.8                    py27_0  
anaconda-client           1.4.0                    py27_0  
anaconda                  custom                   py27_0  
anaconda-navigator        1.2.1                    py27_0  
arch                      3.2                       <pip>
argcomplete               1.0.0                    py27_1  
astropy                   1.2.1               np111py27_0  
attrs                     15.2.0                   py27_0  
babel                     2.3.3                    py27_0  
backports                 1.0                      py27_0  
backports_abc             0.4                      py27_0  
bash_kernel               0.4.1                     <pip>
bcolz                     0.12.1                    <pip>
beautifulsoup4            4.4.1                    py27_0  
bitarray                  0.8.1                    py27_0  
blaze                     0.10.1                   py27_0  
bokeh                     0.12.0                   py27_0  
boto                      2.40.0                   py27_0  
bottleneck                1.1.0               np111py27_0  
bz2file                   0.98                     py27_0  
cachetools                1.1.6                     <pip>
cairo                     1.12.18                       6  
cdecimal                  2.3                      py27_2  
cffi                      1.6.0                    py27_0  
chest                     0.2.3                    py27_0  
click                     6.6                      py27_0  
click-plugins             1.0.3                     <pip>
cligj                     0.4.0                     <pip>
cloudpickle               0.2.1                    py27_0  
clyent                    1.2.2                    py27_0  
colorama                  0.3.7                    py27_0  
CommonMark                0.5.4                     <pip>
conda                     4.1.11                   py27_0  
conda-build               1.21.3                   py27_0  
conda-env                 2.5.2                    py27_0  
configobj                 5.0.6                    py27_0  
configparser              3.5.0b2                  py27_1  
contextlib2               0.5.3                    py27_0  
cryptography              1.4                      py27_0  
cssselect                 0.9.2                    py27_0  
curl                      7.49.0                        0  
cycler                    0.10.0                   py27_0  
cyordereddict             1.0.0                     <pip>
cython                    0.24                     py27_0  
cytoolz                   0.8.0                    py27_0  
dask                      0.10.0                   py27_0  
datashape                 0.5.2                    py27_0  
dateutil                  2.4.1                    py27_0  
decorator                 4.0.10                   py27_0  
descartes                 1.0.2                     <pip>
dill                      0.2.5                    py27_0  
docutils                  0.12                     py27_2  
dynd-python               0.7.2                    py27_0  
entrypoints               0.2.2                    py27_0  
enum34                    1.1.6                    py27_0  
et_xmlfile                1.0.1                    py27_0  
fastcache                 1.0.2                    py27_1  
feedparser                5.2.1                    py27_0  
filterpy                  0.1.3                     <pip>
Fiona                     1.7.0.post2               <pip>
flask                     0.11.1                   py27_0  
flask-cors                2.1.2                    py27_0  
fontconfig                2.11.1                        6  
FRB                       1.1.4                     <pip>
fred                      3.1                       <pip>
fredapi                   0.3.7                     <pip>
freetype                  2.5.5                         1  
funcsigs                  1.0.2                    py27_0  
functools32               3.2.3.2                  py27_0  
futures                   3.0.5                    py27_0  
fysom                     2.1.2                     <pip>
gensim                    0.12.4              np111py27_0  
get_terminal_size         1.0.0                    py27_0  
gevent                    1.1.1                    py27_0  
greenlet                  0.4.10                   py27_0  
grin                      1.2.1                    py27_3  
h5py                      2.6.0               np111py27_2  
hangulize                 0.0.7                     <pip>
hdf5                      1.8.17                        0  
heapdict                  1.0.0                    py27_1  
hmmlearn                  0.2.0                     <pip>
idna                      2.1                      py27_0  
imagesize                 0.7.1                    py27_0  
inflection                0.3.1                     <pip>
intervaltree              2.1.0                     <pip>
ipaddress                 1.0.16                   py27_0  
ipykernel                 4.3.1                    py27_0  
ipyparallel               5.1.1                    py27_0  
ipython                   5.0.0                    py27_0  
ipython_genutils          0.1.0                    py27_0  
ipywidgets                4.1.1                    py27_0  
itsdangerous              0.24                     py27_0  
jbig                      2.1                           0  
jdcal                     1.2                      py27_1  
jedi                      0.9.0                    py27_1  
jinja2                    2.8                      py27_1  
joblib                    0.10.0                    <pip>
jpeg                      8d                            1  
JPype1                    0.6.1                     <pip>
jsonschema                2.5.1                    py27_0  
jupyter                   1.0.0                    py27_3  
jupyter_client            4.3.0                    py27_0  
jupyter_console           4.1.1                    py27_0  
jupyter_core              4.1.0                    py27_0  
Keras                     1.0.6                     <pip>
konlpy                    0.4.4                     <pip>
libdynd                   0.7.2                         0  
libffi                    3.2.1                         0  
libgfortran               3.0.0                         1  
libpng                    1.6.22                        0  
libsodium                 1.0.10                        0  
libtiff                   4.0.6                         2  
libxml2                   2.9.2                         0  
libxslt                   1.1.28                        0  
llvmlite                  0.11.0                   py27_0  
locket                    0.2.0                    py27_1  
Logbook                   1.0.0                     <pip>
lxml                      3.6.0                    py27_0  
markupsafe                0.23                     py27_2  
matplotlib                1.5.1               np111py27_0  
meld3                     1.0.2                    py27_0  
mistune                   0.7.2                    py27_0  
mkl                       11.3.3                        0  
mkl-service               1.1.2                    py27_2  
more-itertools            2.2                       <pip>
mpmath                    0.19                     py27_1  
multipledispatch          0.4.8                    py27_0  
munch                     2.0.4                     <pip>
nb_anacondacloud          1.1.0                    py27_0  
nb_conda                  1.1.0                    py27_0  
nb_conda_kernels          1.0.3                    py27_0  
nbconvert                 4.2.0                    py27_0  
nbformat                  4.0.1                    py27_0  
nbpresent                 3.0.2                    py27_0  
nbsphinx                  0.2.9                     <pip>
ndg-httpsclient           0.4.2                     <pip>
networkx                  1.11                     py27_0  
nlpy                      0.0.9                     <pip>
nltk                      3.2.1                    py27_0  
nose                      1.3.7                    py27_1  
notebook                  4.2.1                    py27_0  
numba                     0.26.0              np111py27_0  
numexpr                   2.6.0               np111py27_0  
numpy                     1.11.1                   py27_0  
numpydoc                  0.6.0                     <pip>
odo                       0.5.0                    py27_1  
openpyxl                  2.3.2                    py27_0  
openssl                   1.0.2h                        1  
pandas                    0.18.1              np111py27_0  
pandas-datareader         0.2.1                     <pip>
pandaSDMX                 0.4.1                     <pip>
parsel                    1.0.2                    py27_0  
partd                     0.3.4                    py27_0  
patchelf                  0.9                           0  
path.py                   8.2.1                    py27_0  
pathlib2                  2.1.0                    py27_0  
patsy                     0.4.1                    py27_0  
pep8                      1.7.0                    py27_0  
pexpect                   4.0.1                    py27_0  
pickleshare               0.7.2                    py27_0  
pillow                    3.2.0                    py27_1  
pip                       8.1.2                    py27_0  
pixman                    0.32.6                        0  
ply                       3.8                      py27_0  
prompt_toolkit            1.0.3                    py27_0  
protobuf                  3.0.0b2                   <pip>
psutil                    4.3.0                    py27_0  
ptyprocess                0.5.1                    py27_0  
pudb                      2016.2                    <pip>
py                        1.4.31                   py27_0  
pyasn1                    0.1.9                    py27_0  
pyasn1-modules            0.0.8                    py27_0  
pycairo                   1.10.0                   py27_0  
pycosat                   0.6.1                    py27_1  
pycountry                 1.20                      <pip>
pycparser                 2.14                     py27_1  
pycrypto                  2.6.1                    py27_4  
pycurl                    7.43.0                   py27_0  
pydispatcher              2.0.5                    py27_0  
pydot                     1.2.2                     <pip>
pydot-ng                  1.0.0.15                 py27_0  
pyflakes                  1.2.3                    py27_0  
pygments                  2.1.3                    py27_0  
pymc                      2.3.6               np111py27_1  
pymc3                     3.0                       <pip>
pymongo                   3.0.3                    py27_0  
pyopenssl                 0.16.0                   py27_0  
pyparsing                 2.1.4                    py27_0  
pyproj                    1.9.5.1                   <pip>
pyqt                      4.11.4                   py27_3  
pytables                  3.2.3.1             np111py27_0  
pytest                    2.9.2                    py27_0  
python                    2.7.12                        1  
python-dateutil           2.5.3                    py27_0  
pytz                      2016.4                   py27_0  
pyyaml                    3.11                     py27_4  
pyzmq                     15.3.0                   py27_0  
qt                        4.8.7                         3  
qtconsole                 4.2.1                    py27_0  
qtpy                      1.0.2                    py27_0  
Quandl                    3.0.1                     <pip>
QuantLib-Python           1.8                       <pip>
queuelib                  1.4.2                    py27_0  
readline                  6.2                           2  
recommonmark              0.4.0                     <pip>
redis                     3.2.0                         0  
redis-py                  2.10.5                   py27_0  
regex                     2016.7.21                 <pip>
requests                  2.10.0                   py27_0  
requests-file             1.4                       <pip>
rope                      0.9.4                    py27_1  
rpy2                      2.8.2                     <pip>
Rtree                     0.8.2                     <pip>
ruamel_yaml               0.11.7                   py27_0  
scikit-image              0.12.3              np111py27_1  
scikit-learn              0.17.1              np111py27_2  
scipy                     0.18.0              np111py27_0  
scrapy                    1.1.1                    py27_0  
seaborn                   0.7.0                    py27_0  
service_identity          16.0.0                   py27_0  
setuptools                23.0.0                   py27_0  
Shapely                   1.5.16                    <pip>
simplegeneric             0.8.1                    py27_1  
singledispatch            3.4.0.3                  py27_0  
sip                       4.16.9                   py27_0  
six                       1.10.0                   py27_0  
smart_open                1.3.3                    py27_0  
snowballstemmer           1.2.1                    py27_0  
sockjs-tornado            1.0.3                    py27_0  
sortedcontainers          1.5.3                     <pip>
sphinx                    1.4.1                    py27_0  
sphinx_rtd_theme          0.1.9                    py27_0  
spyder                    2.3.9                    py27_0  
sqlalchemy                1.0.13                   py27_0  
sqlite                    3.13.0                        0  
ssl_match_hostname        3.4.0.2                  py27_1  
statsmodels               0.6.1               np111py27_1  
statsmodels               0.8.0                     <pip>
supervisor                3.3.0                    py27_0  
sympy                     1.0                      py27_0  
TA-Lib                    0.4.9                     <pip>
tensorflow                0.8.0                     <pip>
terminado                 0.6                      py27_0  
Theano                    0.9.0.dev2                <pip>
tk                        8.5.18                        0  
toolz                     0.8.0                    py27_0  
tornado                   4.3                      py27_1  
traitlets                 4.2.1                    py27_0  
twisted                   16.3.0                   py27_0  
unicodecsv                0.14.1                   py27_0  
unidecode                 0.04.19                  py27_0  
urwid                     1.3.1                     <pip>
virtualenv                13.0.1                   py27_0  
w3lib                     1.14.3                   py27_0  
wbdata                    0.2.7                     <pip>
wbpy                      2.0.1                     <pip>
wcwidth                   0.1.7                    py27_0  
werkzeug                  0.11.10                  py27_0  
wheel                     0.29.0                   py27_0  
xlrd                      1.0.0                    py27_0  
xlsxwriter                0.9.2                    py27_0  
xlwt                      1.1.2                    py27_0  
xz                        5.2.2                         0  
yaml                      0.1.6                         0  
zeromq                    4.1.4                         0  
zipline                   1.0.1                     <pip>
zlib                      1.2.8                         3  
zope                      1.0                      py27_0  
zope.interface            4.2.0                    py27_1  

In [4]:
conda search --full-name python  # 설치 가능한 파이썬 버전 확인


Fetching package metadata .......
python                       1.0.1                         0  defaults        
                             2.6.8                         1  defaults        
                             2.6.8                         2  defaults        
                             2.6.8                         3  defaults        
                             2.6.8                         4  defaults        
                             2.6.8                         5  defaults        
                             2.6.8                         6  defaults        
                             2.6.8                         7  defaults        
                             2.6.9                         0  defaults        
                             2.6.9                         1  defaults        
                             2.7.3                         2  defaults        
                             2.7.3                         3  defaults        
                             2.7.3                         4  defaults        
                             2.7.3                         5  defaults        
                             2.7.3                         6  defaults        
                             2.7.3                         7  defaults        
                             2.7.4                         0  defaults        
                             2.7.5                         0  defaults        
                             2.7.5                         1  defaults        
                             2.7.5                         2  defaults        
                             2.7.5                         3  defaults        
                             2.7.6                         0  defaults        
                             2.7.6                         1  defaults        
                             2.7.6                         2  defaults        
                             2.7.7                         0  defaults        
                             2.7.7                         2  defaults        
                             2.7.8                         0  defaults        
                             2.7.8                         1  defaults        
                             2.7.9                         0  defaults        
                             2.7.9                         1  defaults        
                             2.7.9                        d1  defaults        [debug]
                             2.7.9                         2  defaults        
                             2.7.9                        d2  defaults        [debug]
                             2.7.9                         3  defaults        
                             2.7.10                        0  defaults        
                             2.7.10                       d0  defaults        [debug]
                             2.7.10                        1  defaults        
                             2.7.10                        2  defaults        
                             2.7.11                        0  defaults        
                             2.7.11                       d0  defaults        [debug]
                             2.7.11                        5  defaults        
                             2.7.12                        0  defaults        
                          *  2.7.12                        1  defaults        
                             3.3.0                      pro0  defaults        
                             3.3.0                      pro1  defaults        
                             3.3.0                         2  defaults        
                             3.3.0                         3  defaults        
                             3.3.0                         4  defaults        
                             3.3.1                         0  defaults        
                             3.3.2                         0  defaults        
                             3.3.2                         1  defaults        
                             3.3.3                         0  defaults        
                             3.3.4                         0  defaults        
                             3.3.5                         0  defaults        
                             3.3.5                         1  defaults        
                             3.3.5                         2  defaults        
                             3.3.5                         3  defaults        
                             3.3.5                         4  defaults        
                             3.4.0                         0  defaults        
                             3.4.1                         0  defaults        
                             3.4.1                         1  defaults        
                             3.4.1                         2  defaults        
                             3.4.1                         3  defaults        
                             3.4.1                         4  defaults        
                             3.4.2                         0  defaults        
                             3.4.3                         0  defaults        
                             3.4.3                         1  defaults        
                             3.4.3                         2  defaults        
                             3.4.4                         0  defaults        
                             3.4.4                         5  defaults        
                             3.4.5                         0  defaults        
                             3.5.0rc4                      0  defaults        
                             3.5.0                         0  defaults        
                             3.5.0                         1  defaults        
                             3.5.1                         0  defaults        
                             3.5.1                         5  defaults        
                             3.5.2                         0  defaults        

파이썬 인터프리터 동작 확인

Anaconda Prompt를 실행하여 열린 콘솔 창에 다음과 같이 입력하여 기본 파이썬 인터프리터를 실행한다.

$ python
Python 2.7.11 |Anaconda custom (64-bit)| (default, Dec  6 2015, 18:08:32)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
>>>
>>> exit()

IPython 콘솔 동작 확인

같은 콘솔 창에 다음과 같이 입력하여 기능이 강화된 파이썬 인터프리터인 IPython을 실행한다.

$ ipython
파이썬 2.7.11 |Anaconda custom (64-bit)| (default, Dec  6 2015, 18:08:32)
Type "copyright", "credits" or "license" for more information.

IPython 4.1.2 -- An enhanced Interactive 파이썬.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> 파이썬's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]:

In [1]: exit

Jupyter QTConsole 동작 확인

Jupyter QTConsole은 기본 파이썬 인터프리터나 IPython과 달리 별도의 윈도우를 가지는 GUI 어플리케이션으로 메뉴에서 Jupyter QTConsole를 선택하여 실행시킨다.

윈도우즈에서는 다음과 같이 실행

  • 모든 프로그램 > Anaconda2 > Jupyter QTConsole

또는 콘솔에서 다음과 같이 입력

$ jupyter qtconsole &

(X-window가 없고 콘솔만 지원하는 리눅스 서버 환경에서는 실행되지 않음)

Jupyter Notebook 동작 확인

Jupyter Notebook은 웹 브라우저를 사용하여 문서와 코드를 동시에 지원하는 개발 도구이다. 로컬 컴퓨터에서만 접근할 수 있는 웹서버의 형태로 구현되어 있다.

윈도우즈에서는 다음과 같이 실행

  • 모든 프로그램 > Anaconda2 > Jupyter Notebook

또는 콘솔에서 다음과 같이 입력

$ jupyter qtconsole &

(X-window가 없고 콘솔만 지원하는 리눅스 서버 환경에서는 실행되지 않음)

메뉴에서 Jupyter Notebook 을 실행하면 웹서버 프로세스가 돌아가는 콘솔창이 실행되고 동시에 http://localhost:8888/tree 주소로 웹 브라우저가 가동된다.

웹서버 프로세스가 돌아가는 콘솔창을 죽이면 Jupyter Notebook 웹서버가 중지된다.